This invention relates, in general, to the field of message validation in a service-oriented architecture (SOA), and, in particular, the invention relates to enabling context specific validation.
State of the art service interfaces are defined with the Web Service Definition Language (WSDL) that uses Extensible Markup Language (XML) schemas, for example, the XML Schema published as a World Wide Web Consortium (W3C) referred to as XML Schema Definition (XSD), to specify input and output messages. Heterogeneous parties can work together in an SOA ecosystem only if they share a common vocabulary, hence, the wide adoption of standard object models.
Standard data structures, reused in multiple contexts, must contain a generic superset of the data required by each individual service. As a result, service interfaces based on these generic objects are not well specified, particularly from the point of view of message validation. Consider the case of two service interfaces defined using the same “Customer” type. One service interface requires the “DateOfBirth” field of “Customer,” the other does not. It is then unclear whether or not “DateOfBirth” should be a mandatory attribute of “Customer.” If it is not a mandatory field, the first interface is not well specified. If it is a mandatory field, the second interface will contain unnecessary constraints.
The opposite design approach uses messages decoupled from object models. Messages become containers of a flat list of attributes; lists that include only the data required by the service. The interface is strictly specified, but it has little semantic value because it is not expressed in terms of the reference object model. Moreover, when a composite service is built by aggregating multiple atomic services, a set of data transformations is required to create different data types for different services. This has a significant impact on development costs and runtime performance.